﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using GestionIncidencias.Models;
//using SOAPTecnico.Dominio;

namespace GestionIncidencias.Controllers
{
    public class ClienteController : Controller
    {
        //Clientes2WS.ClientesServiceClient AdminClientes = new Clientes2WS.ClientesServiceClient();        

        private List<Cliente> CrearClientes()
        {
            List<Cliente> clientes = new List<Cliente>();
            clientes.Add(new Cliente() { Codigo=1, Area="Contabilidad", Nombre="Jose",Apellido="Rosemberg", Usuario="jcro", Contrasena="123" });
            clientes.Add(new Cliente() { Codigo=2, Area="Logistica", Nombre="Jorge Luis",Apellido="Diaz", Usuario="jldiaz", Contrasena="12345" });
            return clientes;
        }


        private Cliente ObtenerCliente (int codigo)
        {
            List<Cliente> clientes = (List<Cliente>)Session["clientes"];
            Cliente model = clientes.Single(delegate(Cliente cliente){
            if (cliente.Codigo == codigo) return true;
            else return false;
            });
                return model;
        }


        public ActionResult Index()
        { 
            if (Session["clientes"]== null)
                Session["clientes"]= CrearClientes();
            List<Cliente> model=(List<Cliente>)Session["clientes"];
            return View(model);
        }


        public ActionResult Details(int id)
        {
            Cliente model= ObtenerCliente(id);
            return View(model);
        }


        public ActionResult Create()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            if (ModelState.IsValid)
            {
                try
                {
                   /* Clientes addClientes = new Clientes();
                    {
                        addClientes.Nombre = collection["Nombre"];
                        addClientes.Apellido = collection["Apellido"];
                        addClientes.Area = collection["Area"];
                        addClientes.Usuario = collection["Usuario"];
                        addClientes.Contrasena = collection["Contrasena"];
                        Clientes Return = AdminClientes.CrearCliente(addClientes);
                    };
                    return RedirectToAction("Index");*/
                }
                catch
                {
                }
            }
                return View();            
        }


        public ActionResult Edit(int id)
        {
            Cliente model  = ObtenerCliente(id);
            return View(model);
        }
        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            if (ModelState.IsValid)
            {
            try
            {
                Cliente model = ObtenerCliente(id);
                {
                    model.Nombre = collection["Nombre"];
                    model.Apellido = collection["Apellido"];
                    model.Area = collection["Area"];
                    model.Usuario = collection["Usuario"];
                    model.Contrasena = collection["Contrasena"];
                };
                return RedirectToAction("Index");
            }
            catch
            {
            }
            }
                return View();            
        }


        public ActionResult Delete(int id)
        {
            Cliente model  = ObtenerCliente(id);
            return View(model);
        }
        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                List<Cliente> clientes = (List<Cliente>) Session["clientes"];
                clientes.Remove(ObtenerCliente(id));
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
